package random;

import java.util.ArrayList;
import java.util.List;

/**
 * 解码异或后的数组
 * 经编码后变为长度为 n - 1 的另一个整数数组 encoded ，其中 encoded[i] = arr[i] XOR arr[i + 1] 。
 * 例如，arr = [1,0,2,1] 经编码后得到 encoded = [1,2,3] 。
 * 给你编码后的数组 encoded 和原数组 arr 的第一个元素 first（arr[0]）。
 * 请解码返回原数组 arr 。可以证明答案存在并且是唯一的。
 */

public class L1720 {

    public static void main(String[] args) {

        int[] encoded = new int[]{1,2,3};
        int[] decode = decode(encoded, 1);
        for (int i = 0; i < decode.length; i++) {
            System.out.print(decode[i] + ",");
        }
    }

    public static int[] decode(int[] encoded, int first) {

        int[] ints = new int[encoded.length + 1];
        ints[0] = first;
        for (int i = 0; i < encoded.length; i++) {
            int temp = encoded[i] ^ first;
            ints[i+1] = temp;
            first = temp;
        }

        return ints;
    }
}
